import java.util.Locale;
import java.util.zip.DeflaterOutputStream;

public class Test {


    //其他操作
    public static void main(String[] args) {
        String s1 = "     adha  aa   asd    ";
        //去除字符串开头和结尾的所有空格
        String temp = s1.trim();
        System.out.println(temp);
    }
    //字符串截取
    public static void main7(String[] args) {
        String s1 = "hello world how are you";

        //从下标为5的位置开始截取
        String temp1 = s1.substring(6);
        System.out.println(temp1);

        //从下标为5的位置开始截取到9下标位置结束 [5,9)
        String temp2 = s1.substring(6,9);
        System.out.println(temp2);
    }

    //字符串拆分
    public static void main6(String[] args) {
        String s1 = "hello world how are you";
        //将字符串以" "空格字符进行拆分
        String[] arr = s1.split(" ");
        for(int i=0; i<arr.length; ++i) {
            System.out.print(arr[i] + " -> ");
        }

        System.out.println();

        //将字符串以" "空格字符进行拆分成两组
        String[] arr2 = s1.split(" ",2);
        for(int i=0; i<arr2.length; ++i) {
            System.out.print(arr2[i] + " -> ");
        }
    }

    //字符串的替换
    public static void main5(String[] args) {
        String s = " hello world";
        String temp=s.replace('o','z');
        System.out.println(temp);

        //替换首个字符
        System.out.println(s.replaceFirst("ll","yy"));
    }

    //转换为字符串
    public static void main4(String[] args) {
        String s1 = String.valueOf(1234);
        String s2 = String.valueOf(true);
        System.out.println(s1);
        System.out.println(s2);

        //字符串转换为其他类型
        int num1 = Integer.valueOf("8848");
        int num2 = Integer.parseInt("9999");
        System.out.println(num1+1);

        double num3 = Double.valueOf("99.99");
        System.out.println(num3);

        //大小写转换
        String str1 = "abcdef";
        System.out.println(str1.toUpperCase());
        String str2 = "ABDJDA";
        String temp = str2.toLowerCase();
        System.out.println(temp);

        //字符数组传字符串
        char[] arr = {'a','b','m','h'};
        String s = new String(arr);
        System.out.println(s);

        //字符串转字符数组
        String ss = "asndasdasd";
        char[] newarr = ss.toCharArray();
        for(int i=0; i<newarr.length; ++i) {
            System.out.print(newarr[i]+" ");
        }
    }

    //字符串的查找
    public static void main3(String[] args) {
        String str = "hello world welcome";

        //给一个下标，返回这个下标的值
        char ch = str.charAt(1);
        System.out.println(ch);

        //给一个字符，返回当前字符第一次出现的下标位置
        int pos1 = str.indexOf('m');
        System.out.println(pos1);

        //返回从某个下标(10)位置开始第一次出现字符(e)的位置
        int pos2 = str.indexOf('e',10);
        System.out.println(pos2);

        //返回字符串的位置类与上面的单个字符相同
        int pos3 = str.indexOf("world");
        int pos4 = str.indexOf("we",5);

        //从后往前第一次出现字符(o)的位置
        int pos5 = str.lastIndexOf('o');
        System.out.println(pos5);

        //从后(14)下标往前第一次出现字符(o)的位置
        int pos6 = str.lastIndexOf("o",14);
        System.out.println(pos6);
    }

    //String 对象的比较
    public static void main2(String[] args) {
        //通过new 出来的是不同的对象
        String s1 = new String("hello");
        String s2 = new String("hello");
        System.out.println(s1==s2);  //false
        System.out.println(s1.equals(s2));//true
        //如果需要比较不同对象所指向的内容可以用equals方法

        //常量构造相同的字符串都指向的是常量池
        String s3="world";
        String s4="world";
        System.out.println(s3==s4);//true
        //当使用常量构造时，会先到常量池寻找是否有当前字符串，
        // 如果没有则把当前字符串添加进去，如果有则会将当前引用变量指向这个常量池位置
    }

    //字符串的构造
    public static void main1(String[] args) {
        //常量构造
        String s1 = "abcdef";
        //new构造
        String s2 = new String("gugugug");
        //字符数组构造
        char[] arr = {'a','z','c','b'};
        String s3 = new String(arr);
    }
}
